//
//  RunTime.m
//  Project_Demo
//
//  Created by Leon on 2018/7/1.
//  Copyright © 2018年 caoxiaozhu. All rights reserved.
//

#import "RunTime.h"
//runtime必须加载message的系统方法
#import <objc/message.h>

@interface RunTime ()

@property(nonatomic,strong)Runtime_demoVc *demoVc ;

@end

@implementation RunTime

- (void)viewDidLoad {
    [super viewDidLoad];
    
    /*运行时主要有几大特性
     1.交换方法
     2.交换属性
     3.直接运行方法
     */
    [self runTime];
}

-(void)runTime{
    
    _demoVc = [[Runtime_demoVc alloc]init];
    //直接运行方法
//    [self directRunFunction];
    [self exchangeMethod];
//    [self addMethod];
    
}

#pragma mark:直接运行方法
-(void)directRunFunction{
    
    objc_msgSend(_demoVc, @selector(runTime));
}

#pragma mark:直接交换方法
-(void)exchangeMethod{
//    UIImage *image = [UIImage imageNamed:@"好的"];
    
}

#pragma mark:动态添加方法
-(void)addMethod{
    //添加不带属性方法
    [_demoVc performSelector:@selector(add)];
    //添加带属性方法
    [_demoVc performSelector:@selector(addCharacter:) withObject:@"我是谁"];
//    objc_msgSend(_demoVc, @selector(addCharacter:),@"我是谁");
}

@end
